package 日期类使用同步.sync;

import java.text.ParseException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * @author zhenyu.nie created on 2013 13-8-26 下午2:13
 * @version 1.0.0
 */
public class CalendarTest {

    public static void main(String[] args) {
      

        Thread t1 = new Thread(() -> {
            try {
                日期类使用同步.sync.DateUtil.parse("1992-09-13", 日期类使用同步.sync.DateUtil.patten1);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        });

        Thread t2 = new Thread() {

            @Override
            public void run() {
                try {
                    日期类使用同步.sync.DateUtil.parse("2000-09", 日期类使用同步.sync.DateUtil.patten2);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        };

        Thread t3 = new Thread(() -> {
            try {
                日期类使用同步.sync.DateUtil.parse("1992-09-13", 日期类使用同步.sync.DateUtil.patten1);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        });

        Thread t4 = new Thread(() -> {
            try {
                日期类使用同步.sync.DateUtil.parse("2000-09", 日期类使用同步.sync.DateUtil.patten2);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        });

        Thread t5 = new Thread() {

            @Override
            public void run() {
                try {
                    日期类使用同步.sync.DateUtil.parse("2000-09-13", 日期类使用同步.sync.DateUtil.patten1);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        };

        Thread t6 = new Thread() {

            @Override
            public void run() {
                try {
                    日期类使用同步.sync.DateUtil.parse("2000-09", 日期类使用同步.sync.DateUtil.patten2);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        };

        System.out.println("单步执行 ");
        ExecutorService exec = Executors.newFixedThreadPool(1); //线程池只有一个线程
        exec.execute(t1);
        exec.execute(t2);
        exec.execute(t3);
        exec.execute(t4);
        exec.execute(t5);
        exec.execute(t6);
        exec.shutdown();

        sleep(1000);

        System.out.println("同时执行");
        ExecutorService exec2 = Executors.newFixedThreadPool(5);//线程池只有2个线程
        exec2.execute(t1);
        exec2.execute(t2);
        exec2.execute(t3);
        exec2.execute(t4);
        exec2.execute(t5);
        exec2.execute(t6);
        exec2.shutdown();
    }

    private static void sleep(long millSec) {
        try {
            TimeUnit.MILLISECONDS.sleep(millSec);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}